Mobile computing devices such as personal digital assistants, contemporary mobile telephones, and hand-held and pocket-sized computers are becoming important and popular user tools. In general, they have become small enough to be extremely convenient, while consuming less battery power, and at the same time have become capable of running more powerful applications.
During the process of manufacturing such devices, embedded operating system images are typically built into a monolithic image file and stored in non-volatile storage (e.g., NAND or NOR flash memory, a hard disk and so forth) of each device. As a result, updating such a device heretofore was a fairly complex and resource-intensive problem, generally requiring a custom solution.
For example, updating such a device typically involves downloading an entirely new monolithic image file comprising a single static image developed and released to run on a collection of devices. As can be readily appreciated, a significant amount of system resources (e.g., storage for temporarily holding the update image, network bandwidth for receiving the entire image file, and so forth) are required, regardless of what changed, and thus the device update process usually necessitates a one-off custom solution.
What is needed is a better way to update the non-volatile storage of computing devices that is more flexible, dynamic and efficient than current update mechanisms, yet is failsafe.